/* thread_create.c */
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct student {
    int age;
    char name[20];
} STU;

// 线程执行函数
void *create(void *arg) {
    STU *temp = (STU *)arg; // 正确参数类型转换
    printf("The following is transferred to thread:\n");
    printf("STU age is %d\n", temp->age);
    printf("STU name is %s\n", temp->name);
    return NULL; // 明确返回NULL
}

int main(int argc, char *argv[]) {
    pthread_t tidp; // 修正变量名
    int error;
    STU *stu = malloc(sizeof(STU)); // 正确分配内存

    // 初始化结构体成员
    stu->age = 20; // 赋值操作
    strcpy(stu->name, "abcdefg"); // 正确变量名

    // 创建线程
    error = pthread_create(&tidp, NULL, create, (void *)stu);
    if (error != 0) {
        printf("pthread_create failed\n");
        return -1;
    }

    // 等待线程结束
    pthread_join(tidp, NULL);
    free(stu); // 释放内存
    return 0;
}
